package com.ggkt.common.utils;
import java.math.BigDecimal;
import java.text.DecimalFormat;

public class NumberUtil {
    /**
     * 获取四舍五入的值
     * value 四舍五入的值
     * flag  保留小数点后几位
     */
    public static float getRounding(float value,Integer flag) {
        BigDecimal bd = new BigDecimal(value);
        float f = bd.setScale(flag,BigDecimal.ROUND_HALF_UP).floatValue();
        return f;
    }

    /**
     * float类型数据减法计算  返回四舍五入后的float值 保留两位
     * v1   四舍五入的入参值
     * v2   四舍五入的入参值
     */
    public static float subtractFloat(float v1,float v2) {
        BigDecimal bd1 = new BigDecimal(v1);
        BigDecimal bd2 = new BigDecimal(v2);
        float f = bd1.subtract(bd2).setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();
        return f;
    }

    /**
     * 获取四舍五入的值，并格式化
     * value 四舍五入的值
     * flag  保留小数点后几位
     */
    public static String getRoundingFormat(float value,Integer flag) {
        BigDecimal bd = new BigDecimal(value);
        float f = bd.setScale(flag,BigDecimal.ROUND_HALF_UP).floatValue();
        DecimalFormat df = new DecimalFormat("#.##");
        return df.format(f);
    }
    /**
     * 获取四舍五入的值，并格式化
     * value 四舍五入的值
     * flag  保留小数点后几位
     */
    public static String getRoundingFormatDouble(double value,Integer flag) {
        BigDecimal bd = new BigDecimal(value);
        double f = bd.setScale(flag,BigDecimal.ROUND_HALF_UP).doubleValue();
        DecimalFormat df = new DecimalFormat("#.##");
        return df.format(f);
    }
    /**
     * 获取四舍五入的值，并格式化
     * value 四舍五入的值
     * flag  保留小数点后几位
     * 导出报表时，整数显示xxx.0# ，结果为零显示0.0
     */
    public static String getRoundingFormatDoubleShowMoney(double value,Integer flag) {
        BigDecimal bd = new BigDecimal(value);
        double f = bd.setScale(flag,BigDecimal.ROUND_HALF_UP).doubleValue();
        DecimalFormat df = new DecimalFormat("0.0#");
        return df.format(f);
    }

    /**
     * 字符串转Float
     * @param str
     * @return
     * @throws Exception
     */
    public static Float str2Float(String str) throws Exception{
        if(str == null || "".equals(str)){
            return (float) 0.0;
        }
        return Float.parseFloat(str);
    }


}
